#include<iostream>
using namespace std;

#include<string>
#include<vector>
#include<list>

//int main()
//{
//	int x = 0, y = 1;
//	swap(x, y);
//
//	double m = 1.1, n = 2.2;
//	swap(m, n);
//
//
//  cout<<m<<"  "<<n<<endl;
//  cout<<x<<"  "<<y<<endl;
//	return 0;
//}


//模板+函数
//模板+类 
//
//template<class T>
//
//class Stack
//{
//  public:
//    void push(const T& x)
//    {
//      //...
//    }
//
//  private:
//    T* _a;
//    int _top;
//    int _capcity;
//};
//
//
//template<class T>
//void Stack<T>::push(const T& x)
//{
//
//}
//
//
//int main()
//{
//  //同一个类模板，不同类型
//  Stack<int> s1;
//  Stack<double> s2;
//  
//  return 0;
//}
//
//


void test_string1()
{
  string s0;
  string s1("hello world");
  string s2(s1);
  string s3(s1,5,3);
  string s4(s1,5,10);
  string s5(s1,5);


  cout<<s0<<endl;
  cout<<s1<<endl;
  cout<<s2<<endl;
  cout<<s3<<endl;
  cout<<s4<<endl;
  cout<<s5<<endl;

  string s6(10,'#');
  cout<<s6<<endl;
}

void test_string2()
{
  string s1("hello world");

  for(size_t i=0;i< s1.size();i++)
  {
    cout<<s1[i]<<" ";
    cout<<s1.operator[](i)<<endl;
  }
  cout<<endl;

  string s3("hello world");
  s3[0]++;
  cout<<s3<<endl;

  const string s2("hello world");
  cout<<s2<<endl;

  cout<<s3.size()<<endl;
  cout<<s3.capacity()<<endl;
   
  string::iterator it3 = s3.begin();
  while(it3 != s3.end())
  {
    cout<<*it3<<" ";
    ++it3;
  }
  cout<<endl;

 // cout<< typeid(it3).name() <<endl;
 //
 //
 for(auto e : s3)
 {
   cout<<e<<" ";
 }
 cout<<endl;

 }


int main()
{
   test_string2();

  return 0;
}









